home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / reviewed / volume01 / mawk / 1.1 / patch02b < prev    next >
Encoding:
Internet Message Format  |  1992-10-13  |  59.8 KB

  1. From: Mike Brennan <brennan@boeing.com>
  2. Subject: v02i029: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02b/4
  3. Newsgroups: comp.sources.reviewed
  4. Approved: csr@calvin.dgbt.doc.ca
  5.  
  6. Submitted-by: Mike Brennan <brennan@boeing.com>
  7. Posting-number: Volume 2, Issue 29
  8. Archive-name: mawk/patch02b
  9. Patch-To: mawk: Volume 1, Issue 50-68
  10.  
  11. #!/bin/sh
  12. # this is part.02 (part 2 of a multipart archive)
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file diffs2 continued
  15. #
  16. if test ! -r _shar_seq_.tmp; then
  17.     echo 'Please unpack part 1 first!'
  18.     exit 1
  19. fi
  20. (read Scheck
  21.  if test "$Scheck" != 2; then
  22.     echo Please unpack part "$Scheck" next!
  23.     exit 1
  24.  else
  25.     exit 0
  26.  fi
  27. ) < _shar_seq_.tmp || exit 1
  28. if test ! -f _shar_wnt_.tmp; then
  29.     echo 'x - still skipping diffs2'
  30. else
  31. echo 'x - continuing file diffs2'
  32. sed 's/^X//' << 'SHAR_EOF' >> 'diffs2' &&
  33. X  sizes.h
  34. ! copyright 1991, Michael D. Brennan
  35. X  
  36. X  This is a source file for mawk, an implementation of
  37. --- 2,6 ----
  38. X  /********************************************
  39. X  sizes.h
  40. ! copyright 1991, 1992.  Michael D. Brennan
  41. X  
  42. X  This is a source file for mawk, an implementation of
  43. ***************
  44. *** 11,18 ****
  45. X  ********************************************/
  46. X  
  47. ! /* $Log:    sizes.h,v $
  48. !  * Revision 5.1  91/12/05  07:59:35  brennan
  49. X   * 1.1 pre-release
  50. !  * 
  51. X  */
  52. X  
  53. --- 11,21 ----
  54. X  ********************************************/
  55. X  
  56. ! /* $Log: sizes.h,v $
  57. !  * Revision 5.2  1992/08/27  03:20:08  mike
  58. !  * patch2: increase A_HASH_PRIME
  59. !  *
  60. !  * Revision 5.1  1991/12/05  07:59:35  brennan
  61. X   * 1.1 pre-release
  62. !  *
  63. X  */
  64. X  
  65. ***************
  66. *** 23,27 ****
  67. X  
  68. X  #if     ! HAVE_SMALL_MEMORY
  69. ! #define EVAL_STACK_SIZE  256  /* limit on recursion */
  70. X  /* number of fields at startup, must be a power of 2 
  71. X     and FBANK_SZ-1 must be divisible by 3! */
  72. --- 26,30 ----
  73. X  
  74. X  #if     ! HAVE_SMALL_MEMORY
  75. ! #define EVAL_STACK_SIZE  256  /* initial size , can grow */
  76. X  /* number of fields at startup, must be a power of 2 
  77. X     and FBANK_SZ-1 must be divisible by 3! */
  78. ***************
  79. *** 50,54 ****
  80. X  
  81. X  #define  HASH_PRIME  53
  82. ! #define  A_HASH_PRIME 37
  83. X  
  84. X  
  85. --- 53,62 ----
  86. X  
  87. X  #define  HASH_PRIME  53
  88. ! #if ! HAVE_SMALL_MEMORY
  89. ! #define  A_HASH_PRIME 199
  90. ! #else
  91. ! #define  A_HASH_PRIME  37
  92. ! #endif
  93. X  
  94. X  
  95. *** mawk/split.c    Tue Mar  3 17:23:48 1992
  96. --- mawk112/split.c    Wed Jul  8 14:16:36 1992
  97. ***************
  98. *** 11,18 ****
  99. X  ********************************************/
  100. X  
  101. ! /* $Log:    split.c,v $
  102. !  * Revision 5.1  91/12/05  07:56:31  brennan
  103. X   * 1.1 pre-release
  104. !  * 
  105. X  */
  106. X  
  107. --- 11,24 ----
  108. X  ********************************************/
  109. X  
  110. ! /* $Log: split.c,v $
  111. !  * Revision 5.2  1992/07/08  21:19:09  brennan
  112. !  * patch2
  113. !  * change in split() requires that
  114. !  * bi_split() call load_array() even
  115. !  * when cnt is 0.
  116. !  *
  117. !  * Revision 5.1  1991/12/05  07:56:31  brennan
  118. X   * 1.1 pre-release
  119. !  *
  120. X  */
  121. X  
  122. ***************
  123. *** 219,227 ****
  124. X  
  125. X    if ( string(sp)->len == 0 ) /* nothing to split */
  126. !   { free_STRING( string(sp) ) ;
  127. !     sp->type = C_DOUBLE ; sp->dval = 0.0 ;
  128. !     return sp ;
  129. !   }
  130. X    switch ( (sp+2)->type )
  131. X    {
  132. --- 225,230 ----
  133. X  
  134. X    if ( string(sp)->len == 0 ) /* nothing to split */
  135. !     cnt = 0 ;
  136. !   else
  137. X    switch ( (sp+2)->type )
  138. X    {
  139. *** mawk/symtype.h    Tue Mar  3 17:23:48 1992
  140. --- mawk112/symtype.h    Wed Jul  8 08:41:15 1992
  141. ***************
  142. *** 11,18 ****
  143. X  ********************************************/
  144. X  
  145. ! /*$Log:    symtype.h,v $
  146. !  * Revision 5.1  91/12/05  07:59:37  brennan
  147. X   * 1.1 pre-release
  148. !  * 
  149. X  */
  150. X  
  151. --- 11,21 ----
  152. X  ********************************************/
  153. X  
  154. ! /*$Log: symtype.h,v $
  155. !  * Revision 5.2  1992/07/08  15:44:44  brennan
  156. !  * patch2: length returns.  I am a wimp
  157. !  *
  158. !  * Revision 5.1  1991/12/05  07:59:37  brennan
  159. X   * 1.1 pre-release
  160. !  *
  161. X  */
  162. X  
  163. ***************
  164. *** 111,117 ****
  165. X  #define  ST_NR      7  /*  NR is special */
  166. X  #define  ST_ENV     8  /* and so is ENVIRON */
  167. ! #define  ST_LOCAL_NONE  9
  168. ! #define  ST_LOCAL_VAR   10
  169. ! #define  ST_LOCAL_ARRAY 11
  170. X  
  171. X  #define  is_local(stp)   ((stp)->type>=ST_LOCAL_NONE)
  172. --- 114,121 ----
  173. X  #define  ST_NR      7  /*  NR is special */
  174. X  #define  ST_ENV     8  /* and so is ENVIRON */
  175. ! #define  ST_LENGTH  9  /* ditto and bozo */
  176. ! #define  ST_LOCAL_NONE  10
  177. ! #define  ST_LOCAL_VAR   11
  178. ! #define  ST_LOCAL_ARRAY 12
  179. X  
  180. X  #define  is_local(stp)   ((stp)->type>=ST_LOCAL_NONE)
  181. *** mawk/types.h    Tue Mar  3 17:23:50 1992
  182. --- mawk112/types.h    Tue Apr  7 12:56:39 1992
  183. ***************
  184. *** 12,19 ****
  185. X  
  186. X  
  187. ! /* $Log:    types.h,v $
  188. !  * Revision 5.1  91/12/05  07:59:39  brennan
  189. X   * 1.1 pre-release
  190. !  * 
  191. X  */
  192. X  
  193. --- 12,19 ----
  194. X  
  195. X  
  196. ! /* $Log: types.h,v $
  197. !  * Revision 5.1  1991/12/05  07:59:39  brennan
  198. X   * 1.1 pre-release
  199. !  *
  200. X  */
  201. X  
  202. *** mawk/version.c    Tue Mar  3 17:29:24 1992
  203. --- mawk112/version.c    Thu Aug 27 04:50:46 1992
  204. ***************
  205. *** 2,6 ****
  206. X  /********************************************
  207. X  version.c
  208. ! copyright 1991, Michael D. Brennan
  209. X  
  210. X  This is a source file for mawk, an implementation of
  211. --- 2,6 ----
  212. X  /********************************************
  213. X  version.c
  214. ! copyright 1991, 1992.  Michael D. Brennan
  215. X  
  216. X  This is a source file for mawk, an implementation of
  217. ***************
  218. *** 11,18 ****
  219. X  ********************************************/
  220. X  
  221. ! /*$Log:    version.c,v $
  222. !  * Revision 5.3  92/03/03  16:42:23  brennan
  223. X   * patch 1
  224. !  * 
  225. X   * Revision 5.2  92/01/22  05:34:10  brennan
  226. X   * version 1.1
  227. --- 11,21 ----
  228. X  ********************************************/
  229. X  
  230. ! /*$Log: version.c,v $
  231. !  * Revision 5.4  1992/08/27  11:50:38  mike
  232. !  * patch2
  233. !  *
  234. !  * Revision 5.3  1992/03/03  16:42:23  brennan
  235. X   * patch 1
  236. !  *
  237. X   * Revision 5.2  92/01/22  05:34:10  brennan
  238. X   * version 1.1
  239. ***************
  240. *** 27,31 ****
  241. X  
  242. X  #define  VERSION_STRING  \
  243. !   "mawk 1.1%s%s Feb 1992, Copyright (C) Michael D. Brennan\n\n"
  244. X  
  245. X  #define  DOS_STRING     ""
  246. --- 30,34 ----
  247. X  
  248. X  #define  VERSION_STRING  \
  249. !   "mawk 1.1%s%s Aug 1992, Copyright (C) Michael D. Brennan\n\n"
  250. X  
  251. X  #define  DOS_STRING     ""
  252. *** mawk/zmalloc.c    Tue Mar  3 17:23:52 1992
  253. --- mawk112/zmalloc.c    Tue Apr  7 12:56:40 1992
  254. ***************
  255. *** 11,18 ****
  256. X  ********************************************/
  257. X  
  258. ! /*$Log:    zmalloc.c,v $
  259. !  * Revision 5.1  91/12/05  07:56:35  brennan
  260. X   * 1.1 pre-release
  261. !  * 
  262. X  */
  263. X  
  264. --- 11,18 ----
  265. X  ********************************************/
  266. X  
  267. ! /*$Log: zmalloc.c,v $
  268. !  * Revision 5.1  1991/12/05  07:56:35  brennan
  269. X   * 1.1 pre-release
  270. !  *
  271. X  */
  272. X  
  273. *** mawk/zmalloc.h    Tue Mar  3 17:23:52 1992
  274. --- mawk112/zmalloc.h    Tue Apr  7 12:56:41 1992
  275. ***************
  276. *** 11,18 ****
  277. X  ********************************************/
  278. X  
  279. ! /*$Log:    zmalloc.h,v $
  280. !  * Revision 5.1  91/12/05  07:59:41  brennan
  281. X   * 1.1 pre-release
  282. !  * 
  283. X  */
  284. X  
  285. --- 11,18 ----
  286. X  ********************************************/
  287. X  
  288. ! /*$Log: zmalloc.h,v $
  289. !  * Revision 5.1  1991/12/05  07:59:41  brennan
  290. X   * 1.1 pre-release
  291. !  *
  292. X  */
  293. X  
  294. *** mawk/config/Idefault.h    Tue Mar  3 17:29:32 1992
  295. --- mawk112/config/Idefault.h    Wed Jul  8 09:13:16 1992
  296. ***************
  297. *** 12,16 ****
  298. X  
  299. X  
  300. ! /* $Log:    Idefault.h,v $
  301. X   * Revision 3.13  92/03/03  16:40:56  brennan
  302. X   * remove HAVE_PRINTF_HD
  303. --- 12,22 ----
  304. X  
  305. X  
  306. ! /* $Log: Idefault.h,v $
  307. !  * Revision 3.15  1992/07/08  16:16:08  brennan
  308. !  * don't attempt any #def or #undef with __STDC__
  309. !  *
  310. !  * Revision 3.14  1992/03/31  13:39:00  brennan
  311. !  * TURN_ON_FPE_TRAPS() macro
  312. !  *
  313. X   * Revision 3.13  92/03/03  16:40:56  brennan
  314. X   * remove HAVE_PRINTF_HD
  315. ***************
  316. *** 186,189 ****
  317. --- 192,199 ----
  318. X  #endif
  319. X  
  320. + #ifndef  TURN_ON_FPE_TRAPS
  321. + #define  TURN_ON_FPE_TRAPS()    /* nothing */
  322. + #endif
  323. X  #ifndef  HAVE_SMALL_MEMORY
  324. X  #define  HAVE_SMALL_MEMORY    0
  325. ***************
  326. *** 194,203 ****
  327. X  
  328. X  
  329. ! #ifndef  __STDC__
  330. ! #define  __STDC__  0
  331. ! #endif
  332. X  #if   __STDC__  
  333. X  #undef  HAVE_PROTOS
  334. X  #define HAVE_PROTOS        1
  335. --- 204,209 ----
  336. X  
  337. X  
  338. ! #ifdef __STDC__
  339. X  #if   __STDC__  
  340. X  #undef  HAVE_PROTOS
  341. X  #define HAVE_PROTOS        1
  342. ***************
  343. *** 208,217 ****
  344. X  #undef  HAVE_STRING_H
  345. X  #define HAVE_STRING_H        1
  346. - #endif  
  347. - #if   __STDC__  &&  ! __GNUC__
  348. - /* with gcc __STDC__ can be defined, but stdlib.h is missing */
  349. X  #undef  HAVE_STDLIB_H
  350. X  #define HAVE_STDLIB_H        1
  351. X  #endif
  352. X  
  353. --- 214,220 ----
  354. X  #undef  HAVE_STRING_H
  355. X  #define HAVE_STRING_H        1
  356. X  #undef  HAVE_STDLIB_H
  357. X  #define HAVE_STDLIB_H        1
  358. + #endif  
  359. X  #endif
  360. X  
  361. ***************
  362. *** 218,222 ****
  363. X  
  364. X  
  365. X  /* the painfull case: we need to catch fpe's and look at errno
  366. X     after lib calls */
  367. --- 221,224 ----
  368. ***************
  369. *** 275,285 ****
  370. X  #endif
  371. X  
  372. - /* ultrix pukes if __STDC__ is defined 0  */
  373. - /* SCO UNIX's cc (from Microsoft) sneezes if __STDC__ is re-#define-d */
  374. - #if (__STDC__ == 0)
  375. - #ifndef M_I386
  376. - #undef __STDC__
  377. - #endif
  378. - #endif
  379. X  
  380. X  /* for Think C on the Macintosh, sizeof(size_t) != sizeof(unsigned
  381. --- 277,280 ----
  382. *** mawk/config/V7.h    Tue Mar  3 17:24:12 1992
  383. --- mawk112/config/V7.h    Tue Apr  7 12:56:53 1992
  384. ***************
  385. *** 16,23 ****
  386. X  */
  387. X  
  388. ! /*$Log:    V7.h,v $
  389. !  * Revision 4.2  91/11/21  13:30:34  brennan
  390. !  *    
  391. !  * 
  392. X   * 11/17/91  C. Mascott        declare fprintf, sprintf on V7
  393. X   *
  394. --- 16,22 ----
  395. X  */
  396. X  
  397. ! /*$Log: V7.h,v $
  398. !  * Revision 4.2  1991/11/21  13:30:34  brennan
  399. !  *
  400. X   * 11/17/91  C. Mascott        declare fprintf, sprintf on V7
  401. X   *
  402. *** mawk/config/atarist.h    Tue Mar  3 17:24:18 1992
  403. --- mawk112/config/atarist.h    Tue Apr  7 12:56:56 1992
  404. ***************
  405. *** 17,24 ****
  406. X  */
  407. X  
  408. ! /*$Log:    atarist.h,v $
  409. !  * Revision 1.1  91/10/29  10:48:52  brennan
  410. X   * Initial revision
  411. !  * 
  412. X  */
  413. X  
  414. --- 17,24 ----
  415. X  */
  416. X  
  417. ! /*$Log: atarist.h,v $
  418. !  * Revision 1.1  1991/10/29  10:48:52  brennan
  419. X   * Initial revision
  420. !  *
  421. X  */
  422. X  
  423. *** mawk/config/bsd43_vax.h    Tue Mar  3 17:24:10 1992
  424. --- mawk112/config/bsd43_vax.h    Tue Apr  7 12:56:50 1992
  425. ***************
  426. *** 12,19 ****
  427. X  
  428. X  
  429. ! /* $Log:    bsd43_vax.h,v $
  430. !  * Revision 4.1  91/09/25  11:41:07  brennan
  431. X   * VERSION 1.0
  432. !  * 
  433. X   * Revision 3.2  91/08/13  09:04:09  brennan
  434. X   * VERSION .9994
  435. --- 12,19 ----
  436. X  
  437. X  
  438. ! /* $Log: bsd43_vax.h,v $
  439. !  * Revision 4.1  1991/09/25  11:41:07  brennan
  440. X   * VERSION 1.0
  441. !  *
  442. X   * Revision 3.2  91/08/13  09:04:09  brennan
  443. X   * VERSION .9994
  444. *** mawk/config/generic.h    Tue Mar  3 17:29:30 1992
  445. --- mawk112/config/generic.h    Tue Apr  7 12:56:48 1992
  446. ***************
  447. *** 12,19 ****
  448. X  
  449. X  
  450. ! /* $Log:    generic.h,v $
  451. !  * Revision 4.4  92/03/03  16:40:54  brennan
  452. X   * remove HAVE_PRINTF_HD
  453. !  * 
  454. X   * Revision 4.3  91/10/29  10:48:26  brennan
  455. X   * version 1.09
  456. --- 12,19 ----
  457. X  
  458. X  
  459. ! /* $Log: generic.h,v $
  460. !  * Revision 4.4  1992/03/03  16:40:54  brennan
  461. X   * remove HAVE_PRINTF_HD
  462. !  *
  463. X   * Revision 4.3  91/10/29  10:48:26  brennan
  464. X   * version 1.09
  465. *** mawk/config/mips.h    Tue Mar  3 17:24:20 1992
  466. --- mawk112/config/mips.h    Tue Apr  7 12:56:56 1992
  467. ***************
  468. *** 10,17 ****
  469. X  ********************************************/
  470. X  
  471. ! /*$Log:    mips.h,v $
  472. !  * Revision 1.2  91/11/15  08:13:20  brennan
  473. X   * declaration for sprintf
  474. !  * 
  475. X   * Revision 1.1  91/10/28  09:58:05  brennan
  476. X   * Initial revision
  477. --- 10,17 ----
  478. X  ********************************************/
  479. X  
  480. ! /*$Log: mips.h,v $
  481. !  * Revision 1.2  1991/11/15  08:13:20  brennan
  482. X   * declaration for sprintf
  483. !  *
  484. X   * Revision 1.1  91/10/28  09:58:05  brennan
  485. X   * Initial revision
  486. *** mawk/config/msc_dos.h    Tue Mar  3 17:24:16 1992
  487. --- mawk112/config/msc_dos.h    Tue Apr  7 12:56:55 1992
  488. ***************
  489. *** 13,20 ****
  490. X  /* Microsoft C 6.0A under MSDOS */
  491. X  
  492. ! /*$Log:    msc_dos.h,v $
  493. !  * Revision 4.3  92/01/09  08:54:09  brennan
  494. X   * changed SAMESEG macro
  495. !  * 
  496. X   * Revision 4.2  91/10/29  09:36:59  brennan
  497. X   * Large model macro
  498. --- 13,20 ----
  499. X  /* Microsoft C 6.0A under MSDOS */
  500. X  
  501. ! /*$Log: msc_dos.h,v $
  502. !  * Revision 4.3  1992/01/09  08:54:09  brennan
  503. X   * changed SAMESEG macro
  504. !  *
  505. X   * Revision 4.2  91/10/29  09:36:59  brennan
  506. X   * Large model macro
  507. *** mawk/config/next.h    Tue Mar  3 17:29:36 1992
  508. --- mawk112/config/next.h    Tue Apr  7 12:56:57 1992
  509. ***************
  510. *** 14,21 ****
  511. X  */
  512. X  
  513. ! /* $Log:    next.h,v $
  514. !  * Revision 1.1  92/02/25  08:13:12  brennan
  515. X   * Initial revision
  516. !  * 
  517. X  */
  518. X  
  519. --- 14,21 ----
  520. X  */
  521. X  
  522. ! /* $Log: next.h,v $
  523. !  * Revision 1.1  1992/02/25  08:13:12  brennan
  524. X   * Initial revision
  525. !  *
  526. X  */
  527. X  
  528. *** mawk/config/sgi.h    Tue Mar  3 17:29:38 1992
  529. --- mawk112/config/sgi.h    Tue Apr  7 12:56:57 1992
  530. ***************
  531. *** 14,21 ****
  532. X  */
  533. X  
  534. ! /* $Log:    sgi.h,v $
  535. !  * Revision 1.1  92/02/25  08:10:22  brennan
  536. X   * Initial revision
  537. !  * 
  538. X  */
  539. X  
  540. --- 14,21 ----
  541. X  */
  542. X  
  543. ! /* $Log: sgi.h,v $
  544. !  * Revision 1.1  1992/02/25  08:10:22  brennan
  545. X   * Initial revision
  546. !  *
  547. X  */
  548. X  
  549. *** mawk/config/sun_os40.h    Tue Mar  3 17:24:10 1992
  550. --- mawk112/config/sun_os40.h    Tue Apr  7 12:56:51 1992
  551. ***************
  552. *** 12,19 ****
  553. X  
  554. X  
  555. ! /* $Log:    sun_os40.h,v $
  556. !  * Revision 4.2  91/11/17  12:34:11  brennan
  557. X   * added a declaration for sprintf()
  558. !  * 
  559. X   * Revision 4.1  91/09/25  11:41:35  brennan
  560. X   * VERSION 1.0
  561. --- 12,19 ----
  562. X  
  563. X  
  564. ! /* $Log: sun_os40.h,v $
  565. !  * Revision 4.2  1991/11/17  12:34:11  brennan
  566. X   * added a declaration for sprintf()
  567. !  *
  568. X   * Revision 4.1  91/09/25  11:41:35  brennan
  569. X   * VERSION 1.0
  570. *** mawk/config/sun_os41.h    Tue Mar  3 17:24:10 1992
  571. --- mawk112/config/sun_os41.h    Tue Jul  7 08:42:39 1992
  572. ***************
  573. *** 2,6 ****
  574. X  /********************************************
  575. X  sun_os41.h
  576. ! copyright 1991, Michael D. Brennan
  577. X  
  578. X  This is a source file for mawk, an implementation of
  579. --- 2,6 ----
  580. X  /********************************************
  581. X  sun_os41.h
  582. ! copyright 1991, 1992.   Michael D. Brennan
  583. X  
  584. X  This is a source file for mawk, an implementation of
  585. ***************
  586. *** 12,19 ****
  587. X  
  588. X  
  589. ! /* $Log:    sun_os41.h,v $
  590. !  * Revision 1.3  91/12/05  08:24:02  brennan
  591. X   * 1.1 pre-release
  592. !  * 
  593. X  */
  594. X  
  595. --- 12,22 ----
  596. X  
  597. X  
  598. ! /* $Log: sun_os41.h,v $
  599. !  * Revision 1.4  1992/07/07  15:45:58  brennan
  600. !  * <stdlib.h> is non-standard
  601. !  *
  602. !  * Revision 1.3  1991/12/05  08:24:02  brennan
  603. X   * 1.1 pre-release
  604. !  *
  605. X  */
  606. X  
  607. ***************
  608. *** 23,26 ****
  609. --- 26,32 ----
  610. X  /* this is missing (actually its in 5include) */
  611. X  int fprintf() ;
  612. + /* this is not in <stdlib.h>  */
  613. + double strtod() ;
  614. X  
  615. X  
  616. *** mawk/config/sysV.h    Tue Mar  3 17:24:14 1992
  617. --- mawk112/config/sysV.h    Tue Apr  7 12:56:54 1992
  618. ***************
  619. *** 24,31 ****
  620. X  */
  621. X  
  622. ! /*$Log:    sysV.h,v $
  623. !  * Revision 4.1  91/09/25  11:41:40  brennan
  624. X   * VERSION 1.0
  625. !  * 
  626. X   * Revision 1.2  91/08/13  09:04:15  brennan
  627. X   * VERSION .9994
  628. --- 24,31 ----
  629. X  */
  630. X  
  631. ! /*$Log: sysV.h,v $
  632. !  * Revision 4.1  1991/09/25  11:41:40  brennan
  633. X   * VERSION 1.0
  634. !  *
  635. X   * Revision 1.2  91/08/13  09:04:15  brennan
  636. X   * VERSION .9994
  637. *** mawk/config/sysV_ieeefp.h    Tue Mar  3 17:24:14 1992
  638. --- mawk112/config/sysV_ieeefp.h    Tue Apr  7 12:56:54 1992
  639. ***************
  640. *** 12,19 ****
  641. X  
  642. X  
  643. ! /* $Log:    sysV_ieeefp.h,v $
  644. !  * Revision 4.1  91/09/25  11:41:45  brennan
  645. X   * VERSION 1.0
  646. !  * 
  647. X   * Revision 1.3  91/09/10  09:19:41  brennan
  648. X   * fixed comment typo
  649. --- 12,19 ----
  650. X  
  651. X  
  652. ! /* $Log: sysV_ieeefp.h,v $
  653. !  * Revision 4.1  1991/09/25  11:41:45  brennan
  654. X   * VERSION 1.0
  655. !  *
  656. X   * Revision 1.3  91/09/10  09:19:41  brennan
  657. X   * fixed comment typo
  658. *** mawk/config/tcc_dos.h    Tue Mar  3 17:24:12 1992
  659. --- mawk112/config/tcc_dos.h    Tue Apr  7 12:56:52 1992
  660. ***************
  661. *** 13,20 ****
  662. X  /* Turbo C under MSDOS */
  663. X  
  664. ! /* $Log:    tcc_dos.h,v $
  665. !  * Revision 4.2  91/10/29  09:37:54  brennan
  666. X   * changes for 1.09
  667. !  * 
  668. X   * Revision 4.1  91/09/25  11:41:51  brennan
  669. X   * VERSION 1.0
  670. --- 13,20 ----
  671. X  /* Turbo C under MSDOS */
  672. X  
  673. ! /* $Log: tcc_dos.h,v $
  674. !  * Revision 4.2  1991/10/29  09:37:54  brennan
  675. X   * changes for 1.09
  676. !  *
  677. X   * Revision 4.1  91/09/25  11:41:51  brennan
  678. X   * VERSION 1.0
  679. *** mawk/config/ultrix42mips.h    Tue Mar  3 17:29:36 1992
  680. --- mawk112/config/ultrix42mips.h    Tue Apr  7 12:56:50 1992
  681. ***************
  682. *** 12,19 ****
  683. X  
  684. X  
  685. ! /* $Log:    ultrix42mips.h,v $
  686. !  * Revision 1.1  92/03/03  12:35:21  brennan
  687. X   * Initial revision
  688. !  * 
  689. X  */
  690. X  
  691. --- 12,19 ----
  692. X  
  693. X  
  694. ! /* $Log: ultrix42mips.h,v $
  695. !  * Revision 1.1  1992/03/03  12:35:21  brennan
  696. X   * Initial revision
  697. !  *
  698. X  */
  699. X  
  700. *** mawk/config/ultrix_vax.h    Tue Mar  3 17:24:08 1992
  701. --- mawk112/config/ultrix_vax.h    Tue Apr  7 12:56:49 1992
  702. ***************
  703. *** 12,19 ****
  704. X  
  705. X  
  706. ! /* $Log:    ultrix_vax.h,v $
  707. !  * Revision 4.1  91/09/25  11:42:07  brennan
  708. X   * VERSION 1.0
  709. !  * 
  710. X   * Revision 3.2  91/08/13  09:04:23  brennan
  711. X   * VERSION .9994
  712. --- 12,19 ----
  713. X  
  714. X  
  715. ! /* $Log: ultrix_vax.h,v $
  716. !  * Revision 4.1  1991/09/25  11:42:07  brennan
  717. X   * VERSION 1.0
  718. !  *
  719. X   * Revision 3.2  91/08/13  09:04:23  brennan
  720. X   * VERSION .9994
  721. *** mawk/config/xenix_r2.h    Tue Mar  3 17:24:14 1992
  722. --- mawk112/config/xenix_r2.h    Tue Apr  7 12:56:53 1992
  723. ***************
  724. *** 24,31 ****
  725. X  */
  726. X  
  727. ! /*$Log:    xenix_r2.h,v $
  728. !  * Revision 4.1  91/09/25  11:42:13  brennan
  729. X   * VERSION 1.0
  730. !  * 
  731. X   * Revision 1.2  91/08/13  09:04:24  brennan
  732. X   * VERSION .9994
  733. --- 24,31 ----
  734. X  */
  735. X  
  736. ! /*$Log: xenix_r2.h,v $
  737. !  * Revision 4.1  1991/09/25  11:42:13  brennan
  738. X   * VERSION 1.0
  739. !  *
  740. X   * Revision 1.2  91/08/13  09:04:24  brennan
  741. X   * VERSION .9994
  742. *** mawk/man/mawk.1    Tue Mar  3 17:23:54 1992
  743. --- mawk112/man/mawk.1    Wed Aug 26 21:14:36 1992
  744. ***************
  745. *** 1,3 ****
  746. ! .TH MAWK 1  "Jan 22 1992" "Version 1.1" "USER COMMANDS"
  747. X  .\" strings
  748. X  .ds ex \fIexpr\fR
  749. --- 1,3 ----
  750. ! .TH MAWK 1  "Jul 13 1992" "Version 1.1.2" "USER COMMANDS"
  751. X  .\" strings
  752. X  .ds ex \fIexpr\fR
  753. ***************
  754. *** 4,8 ****
  755. X  .SH NAME
  756. X  mawk \- pattern scanning and text processing language
  757. X  .SH SYNOPSIS
  758. X  .B mawk
  759. --- 4,7 ----
  760. ***************
  761. *** 25,29 ****
  762. X  .IR program-file ]
  763. X  [\-\|\-] [file ...]
  764. X  .SH DESCRIPTION
  765. X  .B mawk
  766. --- 24,27 ----
  767. ***************
  768. *** 47,51 ****
  769. X  .B mawk
  770. X  provides a small number of extensions.
  771. X  An AWK program is a sequence of \fIpattern {action}\fR pairs and
  772. X  function definitions.
  773. --- 45,49 ----
  774. X  .B mawk
  775. X  provides a small number of extensions.
  776. ! .PP
  777. X  An AWK program is a sequence of \fIpattern {action}\fR pairs and
  778. X  function definitions.
  779. ***************
  780. *** 60,64 ****
  781. X  record separator variable, \fBRS\fR.  Initially,
  782. X  .B RS
  783. ! = "\\n" and records are synonymous with lines.
  784. X  Each record is compared against each
  785. X  .I pattern
  786. --- 58,62 ----
  787. X  record separator variable, \fBRS\fR.  Initially,
  788. X  .B RS
  789. ! = "\en" and records are synonymous with lines.
  790. X  Each record is compared against each
  791. X  .I pattern
  792. ***************
  793. *** 66,82 ****
  794. X  .I "{action}"
  795. X  is executed.
  796. X  .SH OPTIONS
  797. ! .TP \w'\-\fBv'+\w'\fIvar=value'u+2n
  798. ! \-\fBF \fIvalue
  799. X  sets the field separator, \fBFS\fR, to 
  800. X  .IR value .
  801. ! .IP "\-\fBf \fIfile"
  802. X  Program text is read from \fIfile\fR instead of from the
  803. ! command line.  Multiple \-f options are allowed.
  804. ! .IP "\-\fBv \fIvar=value"
  805. X  assigns 
  806. X  .I value
  807. --- 64,80 ----
  808. X  .I "{action}"
  809. X  is executed.
  810. X  .SH OPTIONS
  811. ! .TP \w'\-\fBW'u+\w'\fRsprintf=\fInum\fR'u+2n
  812. ! \-\fBF \fIvalue\fP
  813. X  sets the field separator, \fBFS\fR, to 
  814. X  .IR value .
  815. ! .TP
  816. ! \-\fBf \fIfile
  817. X  Program text is read from \fIfile\fR instead of from the
  818. ! command line.  Multiple
  819. ! .B \-f
  820. ! options are allowed.
  821. ! .TP
  822. ! \-\fBv \fIvar=value\fR
  823. X  assigns 
  824. X  .I value
  825. ***************
  826. *** 83,88 ****
  827. X  to program variable 
  828. X  .IR var .
  829. ! .IP "\-\|\-"
  830. X  indicates the unambiguous end of options.
  831. X  .PP
  832. --- 81,86 ----
  833. X  to program variable 
  834. X  .IR var .
  835. ! .TP
  836. ! \-\|\-
  837. X  indicates the unambiguous end of options.
  838. X  .PP
  839. ***************
  840. *** 89,97 ****
  841. X  The above options will be available with any Posix compatible
  842. X  implementation of AWK, and implementation specific options are
  843. ! prefaced with \-W. 
  844. X  .B mawk 
  845. ! provides three:
  846. ! .TP \w'\-\fBv'+\w'\fIvar=value'u+2n
  847. X  \-\fBW \fRversion
  848. X  .B mawk
  849. --- 87,95 ----
  850. X  The above options will be available with any Posix compatible
  851. X  implementation of AWK, and implementation specific options are
  852. ! prefaced with
  853. ! .BR \-W .
  854. X  .B mawk 
  855. ! provides four:
  856. ! .TP \w'\-\fBW'u+\w'\fRsprintf=\fInum\fR'u+2n
  857. X  \-\fBW \fRversion
  858. X  .B mawk
  859. ***************
  860. *** 104,108 ****
  861. X  representation of the program to stderr.
  862. X  .TP
  863. ! \-\fBW \fRsprintf=\fInum
  864. X  adjusts the size of 
  865. X  .B mawk's
  866. --- 102,106 ----
  867. X  representation of the program to stderr.
  868. X  .TP
  869. ! \-\fBW \fRsprintf=\fInum\fR
  870. X  adjusts the size of 
  871. X  .B mawk's
  872. ***************
  873. *** 116,121 ****
  874. X  forces
  875. X  .B mawk
  876. ! not to consider '\\n' to be space.
  877. X  .SH "THE AWK LANGUAGE"
  878. X  .SS "\fB1. Program structure"
  879. --- 114,118 ----
  880. X  forces
  881. X  .B mawk
  882. ! not to consider '\en' to be space.
  883. X  .SH "THE AWK LANGUAGE"
  884. X  .SS "\fB1. Program structure"
  885. ***************
  886. *** 152,156 ****
  887. X  have no meaning; an empty statement is terminated with a
  888. X  semi-colon. Long statements
  889. ! can be continued with a backslash, \\\|.  A statement can be broken
  890. X  without a backslash after a comma, left brace, &&, ||, 
  891. X  .BR do , 
  892. --- 149,153 ----
  893. X  have no meaning; an empty statement is terminated with a
  894. X  semi-colon. Long statements
  895. ! can be continued with a backslash, \e\|.  A statement can be broken
  896. X  without a backslash after a comma, left brace, &&, ||, 
  897. X  .BR do , 
  898. ***************
  899. *** 218,241 ****
  900. X  .sp
  901. X  .ce
  902. ! "This is a string with a newline at the end.\\n"
  903. X  .sp
  904. ! Strings can be continued across a line by escaping (\\) the newline.
  905. X  The following escape sequences are recognized.
  906. X  .nf
  907. X  .sp
  908. !     \\\\        \\
  909. !     \\"        "
  910. !     \\a        alert, ascii 7
  911. !     \\b        backspace, ascii 8
  912. !     \\t        tab, ascii 9
  913. !     \\n        newline, ascii 10
  914. !     \\v        vertical tab, ascii 11
  915. !     \\f        formfeed, ascii 12
  916. !     \\r        carriage return, ascii 13
  917. !     \\ddd        1, 2 or 3 octal digits for ascii ddd
  918. !     \\xhh        1 or 2 hex digits for ascii  hh
  919. X  .sp
  920. X  .fi
  921. ! If you escape any other character \\c, you get \\c, i.e., 
  922. X  .B mawk
  923. X  ignores the escape.
  924. --- 215,238 ----
  925. X  .sp
  926. X  .ce
  927. ! "This is a string with a newline at the end.\en"
  928. X  .sp
  929. ! Strings can be continued across a line by escaping (\e) the newline.
  930. X  The following escape sequences are recognized.
  931. X  .nf
  932. X  .sp
  933. !     \e\e        \e
  934. !     \e"        "
  935. !     \ea        alert, ascii 7
  936. !     \eb        backspace, ascii 8
  937. !     \et        tab, ascii 9
  938. !     \en        newline, ascii 10
  939. !     \ev        vertical tab, ascii 11
  940. !     \ef        formfeed, ascii 12
  941. !     \er        carriage return, ascii 13
  942. !     \eddd        1, 2 or 3 octal digits for ascii ddd
  943. !     \exhh        1 or 2 hex digits for ascii  hh
  944. X  .sp
  945. X  .fi
  946. ! If you escape any other character \ec, you get \ec, i.e., 
  947. X  .B mawk
  948. X  ignores the escape.
  949. ***************
  950. *** 296,306 ****
  951. X  \*(ex\d1\u \fBrel-op \*(ex\d2\u,
  952. X  if both operands are numeric or number and string then the comparison
  953. ! is numeric; if both operands are string the comparison is string.
  954. ! If exactly one operand is string and after trimming spaces and
  955. ! tabs from the front and back the remaining string is entirely
  956. ! numeric in form, then the string is converted to number and the
  957. ! comparison is numeric; otherwise, the numeric operand is converted
  958. ! to string and the comparison is string.
  959. ! The result of a comparison is numeric, 0 or 1.
  960. X  .PP
  961. X  In boolean contexts such as,
  962. --- 293,299 ----
  963. X  \*(ex\d1\u \fBrel-op \*(ex\d2\u,
  964. X  if both operands are numeric or number and string then the comparison
  965. ! is numeric; if both operands are string the comparison is string;
  966. ! if one operand is string, the non-string operand is converted and
  967. ! the comparison is string.  The result is numeric, 1 or 0.
  968. X  .PP
  969. X  In boolean contexts such as,
  970. ***************
  971. *** 360,364 ****
  972. X  matches any non-metacharacter
  973. X  .IR c .
  974. ! .IP  "\e\fIc\fR"
  975. X  matches a character defined by the same escape sequences used
  976. X  in string constants or the literal
  977. --- 353,358 ----
  978. X  matches any non-metacharacter
  979. X  .IR c .
  980. ! .TP
  981. ! "\e\fIc\fR"
  982. X  matches a character defined by the same escape sequences used
  983. X  in string constants or the literal
  984. ***************
  985. *** 366,372 ****
  986. X  .I c 
  987. X  if
  988. ! \\\fIc\fR
  989. X  is not an escape sequence.
  990. ! .IP  \.
  991. X  matches any character (including newline).
  992. X  .TP
  993. --- 360,367 ----
  994. X  .I c 
  995. X  if
  996. ! \e\fIc\fR
  997. X  is not an escape sequence.
  998. ! .TP
  999. ! \&\.
  1000. X  matches any character (including newline).
  1001. X  .TP
  1002. ***************
  1003. *** 390,394 ****
  1004. X  as follows:
  1005. X  .RS
  1006. ! .TP
  1007. X  \fIr\fR\d1\u\fIr\fR\d2\u
  1008. X  matches 
  1009. --- 385,389 ----
  1010. X  as follows:
  1011. X  .RS
  1012. ! .TP \w'[^c\d1\uc\d2\uc\d3\u...]'u+1n
  1013. X  \fIr\fR\d1\u\fIr\fR\d2\u
  1014. X  matches 
  1015. ***************
  1016. *** 425,429 ****
  1017. X  .sp
  1018. X      /^[_a\-zA-Z][_a\-zA\-Z0\-9]*$/  and
  1019. !     /^[\-+]?([0\-9]+\\\|.?|\\\|.[0\-9])[0\-9]*([eE][\-+]?[0\-9]+)?$/
  1020. X  .sp
  1021. X  .fi
  1022. --- 420,424 ----
  1023. X  .sp
  1024. X      /^[_a\-zA-Z][_a\-zA\-Z0\-9]*$/  and
  1025. !     /^[\-+]?([0\-9]+\e\|.?|\e\|.[0\-9])[0\-9]*([eE][\-+]?[0\-9]+)?$/
  1026. X  .sp
  1027. X  .fi
  1028. ***************
  1029. *** 513,517 ****
  1030. X      echo 24 24E | 
  1031. X      mawk '{ print($1>100, $1>"100", $2>100, $2>"100") }'
  1032. !     0 0 1 1
  1033. X  .fi
  1034. X  .sp
  1035. --- 508,512 ----
  1036. X      echo 24 24E | 
  1037. X      mawk '{ print($1>100, $1>"100", $2>100, $2>"100") }'
  1038. !     0 1 1 1
  1039. X  .fi
  1040. X  .sp
  1041. ***************
  1042. *** 521,529 ****
  1043. X  are string and
  1044. X  .B $1
  1045. ! is number and string.  The first 
  1046. ! and second comparisons are numeric and the last
  1047. ! two are string.  In the second "100" is
  1048. ! converted to 100, and in the third 100 is
  1049. ! converted to "100".
  1050. X  .\"
  1051. X  .SS "\fB5. Expressions and operators"
  1052. --- 516,523 ----
  1053. X  are string and
  1054. X  .B $1
  1055. ! is number and string.  The first comparison is numeric,
  1056. ! the second is string, the third is string
  1057. ! (100 is converted to "100"),
  1058. ! and the last is string.
  1059. X  .\"
  1060. X  .SS "\fB5. Expressions and operators"
  1061. ***************
  1062. *** 672,676 ****
  1063. X  .TP
  1064. X  .B   ORS
  1065. ! terminates each record on output, initially = "\\n".
  1066. X  .TP
  1067. X  .B    RLENGTH
  1068. --- 666,670 ----
  1069. X  .TP
  1070. X  .B   ORS
  1071. ! terminates each record on output, initially = "\en".
  1072. X  .TP
  1073. X  .B    RLENGTH
  1074. ***************
  1075. *** 679,683 ****
  1076. X  .TP
  1077. X  .B   RS
  1078. ! input record separator, initially = "\\n".
  1079. X  .TP
  1080. X  .B  RSTART
  1081. --- 673,677 ----
  1082. X  .TP
  1083. X  .B   RS
  1084. ! input record separator, initially = "\en".
  1085. X  .TP
  1086. X  .B  RSTART
  1087. ***************
  1088. *** 686,690 ****
  1089. X  .TP
  1090. X  .B SUBSEP
  1091. ! used to build multiple array subscripts, initially = "\\034".
  1092. X  .RE
  1093. X  .\"
  1094. --- 680,684 ----
  1095. X  .TP
  1096. X  .B SUBSEP
  1097. ! used to build multiple array subscripts, initially = "\e034".
  1098. X  .RE
  1099. X  .\"
  1100. ***************
  1101. *** 709,713 ****
  1102. X  is replaced by the matched substring of
  1103. X  .IR t .
  1104. ! \\& puts a literal & in the replacement string.
  1105. X  .TP
  1106. X  index(\fIs,t\fR)
  1107. --- 703,707 ----
  1108. X  is replaced by the matched substring of
  1109. X  .IR t .
  1110. ! \e& puts a literal & in the replacement string.
  1111. X  .TP
  1112. X  index(\fIs,t\fR)
  1113. ***************
  1114. *** 723,731 ****
  1115. X  is in position 1.
  1116. X  .TP
  1117. ! length(\fIs\fR)  length()
  1118. X  Returns the length of string
  1119. ! .IR s ;
  1120. ! without an argument, returns the length of 
  1121. ! .BR $0 .
  1122. X  .TP
  1123. X  match(\fIs,r\fR)
  1124. --- 717,723 ----
  1125. X  is in position 1.
  1126. X  .TP
  1127. ! length(\fIs\fR)
  1128. X  Returns the length of string
  1129. ! .IR s .
  1130. X  .TP
  1131. X  match(\fIs,r\fR)
  1132. ***************
  1133. *** 1036,1040 ****
  1134. X  .B mawk
  1135. X  defines <SPACE> as the regular expression
  1136. ! /[\ \\t\\n]+/.  
  1137. X  Otherwise
  1138. X  .I sep
  1139. --- 1028,1032 ----
  1140. X  .B mawk
  1141. X  defines <SPACE> as the regular expression
  1142. ! /[\ \et\en]+/.  
  1143. X  Otherwise
  1144. X  .I sep
  1145. ***************
  1146. *** 1042,1046 ****
  1147. X  are ignored for a string of length 1,
  1148. X  e.g.,
  1149. ! split(x, A, "*") and split(x, A, /\\*/) are the same.
  1150. X  .TP
  1151. X  (3)
  1152. --- 1034,1038 ----
  1153. X  are ignored for a string of length 1,
  1154. X  e.g.,
  1155. ! split(x, A, "*") and split(x, A, /\e*/) are the same.
  1156. X  .TP
  1157. X  (3)
  1158. ***************
  1159. *** 1049,1053 ****
  1160. X  and 
  1161. X  .I A
  1162. ! is unchanged.
  1163. X  Otherwise,
  1164. X  all non-overlapping, non-null and longest matches of
  1165. --- 1041,1045 ----
  1166. X  and 
  1167. X  .I A
  1168. ! is set empty.
  1169. X  Otherwise,
  1170. X  all non-overlapping, non-null and longest matches of
  1171. ***************
  1172. *** 1119,1123 ****
  1173. X  records are easy.  Setting 
  1174. X  .B RS
  1175. ! = "\\n\\n+", makes one or more blank
  1176. X  lines separate records.  If 
  1177. X  .B FS
  1178. --- 1111,1115 ----
  1179. X  records are easy.  Setting 
  1180. X  .B RS
  1181. ! = "\en\en+", makes one or more blank
  1182. X  lines separate records.  If 
  1183. X  .B FS
  1184. ***************
  1185. *** 1127,1138 ****
  1186. X  .RS
  1187. X  .PP
  1188. ! For example, if a file is "a\ b\\nc\\n\\n",
  1189. X  .B RS
  1190. ! = "\\n\\n+" and
  1191. X  .B FS
  1192. ! = "\ ", then there is one record "a\ b\\nc" with three
  1193. X  fields "a", "b" and "c".  Changing
  1194. X  .B FS
  1195. ! = "\\n", gives two
  1196. X  fields "a b" and "c"; changing
  1197. X  .B FS
  1198. --- 1119,1130 ----
  1199. X  .RS
  1200. X  .PP
  1201. ! For example, if a file is "a\ b\enc\en\en",
  1202. X  .B RS
  1203. ! = "\en\en+" and
  1204. X  .B FS
  1205. ! = "\ ", then there is one record "a\ b\enc" with three
  1206. X  fields "a", "b" and "c".  Changing
  1207. X  .B FS
  1208. ! = "\en", gives two
  1209. X  fields "a b" and "c"; changing
  1210. X  .B FS
  1211. ***************
  1212. *** 1144,1148 ****
  1213. X  set
  1214. X  .B RS
  1215. ! = "\\n([\ \\t]*\\n)+".
  1216. X  For compatibility with other awks, setting
  1217. X  .B RS
  1218. --- 1136,1140 ----
  1219. X  set
  1220. X  .B RS
  1221. ! = "\en([\ \et]*\en)+".
  1222. X  For compatibility with other awks, setting
  1223. X  .B RS
  1224. ***************
  1225. *** 1151,1156 ****
  1226. X  front and back of files and then records are determined as if
  1227. X  .B RS
  1228. ! = "\\n\\n+".
  1229. ! Posix requires that "\\n" always separates records when
  1230. X  .B RS
  1231. X  = "" regardless of the value of
  1232. --- 1143,1148 ----
  1233. X  front and back of files and then records are determined as if
  1234. X  .B RS
  1235. ! = "\en\en+".
  1236. ! Posix requires that "\en" always separates records when
  1237. X  .B RS
  1238. X  = "" regardless of the value of
  1239. ***************
  1240. *** 1158,1162 ****
  1241. X  .B mawk 
  1242. X  does not support this convention, because defining
  1243. ! "\\n" as <SPACE> makes it unnecessary.
  1244. X  .\"
  1245. X  .PP
  1246. --- 1150,1154 ----
  1247. X  .B mawk 
  1248. X  does not support this convention, because defining
  1249. ! "\en" as <SPACE> makes it unnecessary.
  1250. X  .\"
  1251. X  .PP
  1252. ***************
  1253. *** 1166,1170 ****
  1254. X  will also want to change 
  1255. X  .B ORS
  1256. ! to "\\n\\n" so the record spacing is preserved on output.
  1257. X  .\"
  1258. X  .SS "\fB13. Program execution"
  1259. --- 1158,1162 ----
  1260. X  will also want to change 
  1261. X  .B ORS
  1262. ! to "\en\en" so the record spacing is preserved on output.
  1263. X  .\"
  1264. X  .SS "\fB13. Program execution"
  1265. ***************
  1266. *** 1198,1202 ****
  1267. X  .B ARGV[4]
  1268. X  = "B".
  1269. X  Next, each 
  1270. X  .B BEGIN
  1271. --- 1190,1194 ----
  1272. X  .B ARGV[4]
  1273. X  = "B".
  1274. ! .PP
  1275. X  Next, each 
  1276. X  .B BEGIN
  1277. ***************
  1278. *** 1326,1330 ****
  1279. X  .B exit
  1280. X  or subsequent error.
  1281. X  .SH EXAMPLES
  1282. X  .nf
  1283. --- 1318,1321 ----
  1284. ***************
  1285. *** 1335,1339 ****
  1286. X  2. emulate wc.
  1287. X  
  1288. !     { chars += length($0) + 1  # add one for the \\n
  1289. X        words += NF
  1290. X      }
  1291. --- 1326,1330 ----
  1292. X  2. emulate wc.
  1293. X  
  1294. !     { chars += length($0) + 1  # add one for the \en
  1295. X        words += NF
  1296. X      }
  1297. ***************
  1298. *** 1385,1389 ****
  1299. X  
  1300. X  .fi
  1301. X  .SH  "COMPATIBILITY ISSUES"
  1302. X  The Posix 1003.2(draft 11.2) definition of the AWK language
  1303. --- 1376,1379 ----
  1304. ***************
  1305. *** 1405,1409 ****
  1306. X  a time.
  1307. X  .B RS
  1308. ! can be changed from "\\n" to another single character,
  1309. X  but it
  1310. X  is hard to find any use for this \(em there are no 
  1311. --- 1395,1399 ----
  1312. X  a time.
  1313. X  .B RS
  1314. ! can be changed from "\en" to another single character,
  1315. X  but it
  1316. X  is hard to find any use for this \(em there are no 
  1317. ***************
  1318. *** 1411,1415 ****
  1319. X  By convention, \fBRS\fR = "", makes one or more blank lines
  1320. X  separate records, allowing multi-line records.  When
  1321. ! \fBRS\fR = "", "\\n" is always a field separator 
  1322. X  regardless of the value in
  1323. X  .BR FS .
  1324. --- 1401,1405 ----
  1325. X  By convention, \fBRS\fR = "", makes one or more blank lines
  1326. X  separate records, allowing multi-line records.  When
  1327. ! \fBRS\fR = "", "\en" is always a field separator 
  1328. X  regardless of the value in
  1329. X  .BR FS .
  1330. ***************
  1331. *** 1420,1424 ****
  1332. X  .B RS
  1333. X  to be a regular expression.
  1334. ! When "\\n" appears in records, it is treated as space, and
  1335. X  .B FS
  1336. X  always determines fields.
  1337. --- 1410,1414 ----
  1338. X  .B RS
  1339. X  to be a regular expression.
  1340. ! When "\en" appears in records, it is treated as space, and
  1341. X  .B FS
  1342. X  always determines fields.
  1343. ***************
  1344. *** 1450,1454 ****
  1345. X  .sp
  1346. X      BEGIN {
  1347. !       RS = "/\|\\*([^*]\||\|\\*+[^/*])*\\*+/"
  1348. X          # comment is record separator
  1349. X        ORS = " "
  1350. --- 1440,1444 ----
  1351. X  .sp
  1352. X      BEGIN {
  1353. !       RS = "/\|\e*([^*]\||\|\e*+[^/*])*\e*+/"
  1354. X          # comment is record separator
  1355. X        ORS = " "
  1356. ***************
  1357. *** 1469,1473 ****
  1358. X  .nf
  1359. X  .sp
  1360. !     x ~ /a\\+b/    x ~ "a\\+b"     x ~ "a\\\\+b"
  1361. X  .sp
  1362. X  .fi
  1363. --- 1459,1463 ----
  1364. X  .nf
  1365. X  .sp
  1366. !     x ~ /a\e+b/    x ~ "a\e+b"     x ~ "a\e\e+b"
  1367. X  .sp
  1368. X  .fi
  1369. ***************
  1370. *** 1486,1493 ****
  1371. X  the more portable but less readable, double escape.
  1372. X  .PP
  1373. ! Posix AWK does not recognize "/dev/stderr" or \\x hex escape
  1374. X  sequences in strings.  Unlike ANSI C,
  1375. X  .B mawk
  1376. ! limits the number of digits that follows \\x to two.
  1377. X  .PP
  1378. X  Finally, here is how 
  1379. --- 1476,1483 ----
  1380. X  the more portable but less readable, double escape.
  1381. X  .PP
  1382. ! Posix AWK does not recognize "/dev/stderr" or \ex hex escape
  1383. X  sequences in strings.  Unlike ANSI C,
  1384. X  .B mawk
  1385. ! limits the number of digits that follows \ex to two.
  1386. X  .PP
  1387. X  Finally, here is how 
  1388. ***************
  1389. *** 1504,1508 ****
  1390. X  returned; so substr("ABC", 1, 0) = "" and
  1391. X  substr("ABC", \-4, 6) = "A".
  1392. X  Every string, including the empty string, matches the empty string
  1393. X  at the
  1394. --- 1494,1498 ----
  1395. X  returned; so substr("ABC", 1, 0) = "" and
  1396. X  substr("ABC", \-4, 6) = "A".
  1397. ! .PP
  1398. X  Every string, including the empty string, matches the empty string
  1399. X  at the
  1400. ***************
  1401. *** 1511,1515 ****
  1402. X  .B RLENGTH 
  1403. X  to 0.
  1404. X  index(s, t) is always the same as match(s, t1) where t1 is the
  1405. X  same as t with metacharacters escaped.  Hence consistency
  1406. --- 1501,1505 ----
  1407. X  .B RLENGTH 
  1408. X  to 0.
  1409. ! .PP
  1410. X  index(s, t) is always the same as match(s, t1) where t1 is the
  1411. X  same as t with metacharacters escaped.  Hence consistency
  1412. ***************
  1413. *** 1518,1522 ****
  1414. X  Also the condition, index(s,t) != 0 if and only t is a substring
  1415. X  of s, requires index("","") = 1.
  1416. X  If getline encounters end of file, getline var, leaves var
  1417. X  unchanged.  Similarly, on entry to the 
  1418. --- 1508,1512 ----
  1419. X  Also the condition, index(s,t) != 0 if and only t is a substring
  1420. X  of s, requires index("","") = 1.
  1421. ! .PP
  1422. X  If getline encounters end of file, getline var, leaves var
  1423. X  unchanged.  Similarly, on entry to the 
  1424. ***************
  1425. *** 1527,1534 ****
  1426. X  .B NF
  1427. X  have their value unaltered from the last record.
  1428. X  .SH SEE ALSO
  1429. ! .I egrep
  1430. ! (1)
  1431. X  .PP
  1432. X  Aho, Kernighan and Weinberger,
  1433. --- 1517,1522 ----
  1434. X  .B NF
  1435. X  have their value unaltered from the last record.
  1436. X  .SH SEE ALSO
  1437. ! .IR egrep (1)
  1438. X  .PP
  1439. X  Aho, Kernighan and Weinberger,
  1440. ***************
  1441. *** 1547,1558 ****
  1442. X  The section on AWK arrays is excellent.  It also
  1443. X  discusses Posix requirements for AWK.
  1444. X  .SH BUGS
  1445. X  .B mawk
  1446. ! cannot handle ascii NUL \\0 in the source or data files.  You
  1447. X  can output NUL using printf with %c, and any other 8 bit
  1448. X  character is acceptable input.
  1449. X  .B mawk
  1450. X  implements printf() and sprintf() using the C library functions,
  1451. --- 1535,1544 ----
  1452. X  The section on AWK arrays is excellent.  It also
  1453. X  discusses Posix requirements for AWK.
  1454. X  .SH BUGS
  1455. X  .B mawk
  1456. ! cannot handle ascii NUL \e0 in the source or data files.  You
  1457. X  can output NUL using printf with %c, and any other 8 bit
  1458. X  character is acceptable input.
  1459. ! .PP
  1460. X  .B mawk
  1461. X  implements printf() and sprintf() using the C library functions,
  1462. ***************
  1463. *** 1562,1569 ****
  1464. X  .B mawk
  1465. X  inherits any bugs or limitations of the library functions.
  1466. X  Implementors of the AWK language have shown a consistent lack
  1467. X  of imagination when naming their programs.
  1468. X  .SH AUTHOR
  1469. X  Mike Brennan (brennan@boeing.com).
  1470. --- 1548,1554 ----
  1471. X  .B mawk
  1472. X  inherits any bugs or limitations of the library functions.
  1473. ! .PP
  1474. X  Implementors of the AWK language have shown a consistent lack
  1475. X  of imagination when naming their programs.
  1476. X  .SH AUTHOR
  1477. X  Mike Brennan (brennan@boeing.com).
  1478. *** mawk/msdos/Makefile.tcc    Tue Mar  3 17:24:52 1992
  1479. --- mawk112/msdos/Makefile.tcc    Tue Apr  7 12:56:59 1992
  1480. ***************
  1481. *** 8,13 ****
  1482. X  #   make  -DLARGE -DREARGV  -- bmawk.exe   unix  command line
  1483. X  
  1484. ! #$Log:    Makefile.tcc,v $
  1485. ! #Revision 1.2  91/11/12  09:59:26  brennan
  1486. X  #changed tcc to $(CC) and .o to .obj
  1487. X  #
  1488. --- 8,13 ----
  1489. X  #   make  -DLARGE -DREARGV  -- bmawk.exe   unix  command line
  1490. X  
  1491. ! #$Log: Makefile.tcc,v $
  1492. ! #Revision 1.2  1991/11/12  09:59:26  brennan
  1493. X  #changed tcc to $(CC) and .o to .obj
  1494. X  #
  1495. *** mawk/msdos/NOTES    Tue Mar  3 17:24:48 1992
  1496. --- mawk112/msdos/NOTES    Fri Jul 10 09:28:23 1992
  1497. ***************
  1498. *** 142,150 ****
  1499. X  POSSIBLE PROBLEMS:
  1500. X  
  1501. ! 1) Using TurboC++ 1.0, the code segment is 153 bytes short of
  1502. ! 64K.  With another compiler or a different version of TurboC++,
  1503. ! this might not fit in 64K. If this is a problem,
  1504. ! then compile with -DNO_BINMODE which removes the BINMODE features
  1505. ! from small model only and then it should fit.
  1506. X  
  1507. X  2)  MSC 5.1 requires /Os and /Gs for small model to fit in 64K.
  1508. --- 142,148 ----
  1509. X  POSSIBLE PROBLEMS:
  1510. X  
  1511. ! 1) Hopefully you can compile for speed and still fit the code
  1512. ! in 64K.  If not set your compiler switches to compile for 
  1513. ! optimized (ie small) size.
  1514. X  
  1515. X  2)  MSC 5.1 requires /Os and /Gs for small model to fit in 64K.
  1516. *** mawk/msdos/dosexec.c    Tue Mar  3 17:24:48 1992
  1517. --- mawk112/msdos/dosexec.c    Tue Jul 28 09:47:03 1992
  1518. ***************
  1519. *** 11,18 ****
  1520. X  ********************************************/
  1521. X  
  1522. ! /*$Log:    dosexec.c,v $
  1523. !  * Revision 1.2  91/11/16  10:27:18  brennan
  1524. !  * BINMODE 
  1525. !  * 
  1526. X   * Revision 1.1  91/10/29  09:45:56  brennan
  1527. X   * Initial revision
  1528. --- 11,21 ----
  1529. X  ********************************************/
  1530. X  
  1531. ! /*$Log: dosexec.c,v $
  1532. !  * Revision 1.3  1992/07/10  16:21:57  brennan
  1533. !  * store exit code of input pipes
  1534. !  *
  1535. !  * Revision 1.2  1991/11/16  10:27:18  brennan
  1536. !  * BINMODE
  1537. !  *
  1538. X   * Revision 1.1  91/10/29  09:45:56  brennan
  1539. X   * Initial revision
  1540. ***************
  1541. *** 99,107 ****
  1542. X  
  1543. X  
  1544. ! static int next_tmp ;
  1545. ! static char *tmpdir ;
  1546. X  
  1547. - /* put the name of a temp file in string buff */
  1548. X  
  1549. X  char *tmp_file_name( id )
  1550. X    int id ;
  1551. --- 102,110 ----
  1552. X  
  1553. X  
  1554. ! static int next_tmp ;  /* index for naming temp files */
  1555. ! static char *tmpdir ;  /* directory to hold temp files */
  1556. X  
  1557. X  
  1558. + /* put the name of a temp file in string buff */
  1559. X  char *tmp_file_name( id )
  1560. X    int id ;
  1561. ***************
  1562. *** 133,137 ****
  1563. X      
  1564. X      sprintf(xbuff, "%s > %s" , command, tmpfile) ;
  1565. !     DOSexec(xbuff) ;
  1566. X      retval = (PTR) FINopen(tmpfile, 0) ;
  1567. X    }
  1568. --- 136,140 ----
  1569. X      
  1570. X      sprintf(xbuff, "%s > %s" , command, tmpfile) ;
  1571. !     tmp_idp[1] = DOSexec(xbuff) ;
  1572. X      retval = (PTR) FINopen(tmpfile, 0) ;
  1573. X    }
  1574. ***************
  1575. *** 160,164 ****
  1576. X  
  1577. X  #endif  /* MSDOS */
  1578. --- 163,164 ----
  1579. *** mawk/msdos/see2obj.c    Tue Mar  3 17:24:52 1992
  1580. --- mawk112/msdos/see2obj.c    Tue Apr  7 12:56:58 1992
  1581. ***************
  1582. *** 11,18 ****
  1583. X  */
  1584. X  
  1585. ! /*$Log:    see2obj.c,v $
  1586. !  * Revision 1.1  91/10/29  07:53:53  brennan
  1587. X   * Initial revision
  1588. !  * 
  1589. X  */
  1590. X  
  1591. --- 11,18 ----
  1592. X  */
  1593. X  
  1594. ! /*$Log: see2obj.c,v $
  1595. !  * Revision 1.1  1991/10/29  07:53:53  brennan
  1596. X   * Initial revision
  1597. !  *
  1598. X  */
  1599. X  
  1600. *** mawk/rexp/rexp.c    Tue Mar  3 17:23:58 1992
  1601. --- mawk112/rexp/rexp.c    Tue Apr  7 12:56:42 1992
  1602. ***************
  1603. *** 11,18 ****
  1604. X  ********************************************/
  1605. X  
  1606. ! /*$Log:    rexp.c,v $
  1607. !  * Revision 3.4  91/08/13  09:09:59  brennan
  1608. X   * VERSION .9994
  1609. !  * 
  1610. X   * Revision 3.3  91/08/04  15:45:03  brennan
  1611. X   * no longer attempt to recover mem on failed REcompile
  1612. --- 11,18 ----
  1613. X  ********************************************/
  1614. X  
  1615. ! /*$Log: rexp.c,v $
  1616. !  * Revision 3.4  1991/08/13  09:09:59  brennan
  1617. X   * VERSION .9994
  1618. !  *
  1619. X   * Revision 3.3  91/08/04  15:45:03  brennan
  1620. X   * no longer attempt to recover mem on failed REcompile
  1621. *** mawk/rexp/rexp.h    Tue Mar  3 17:24:00 1992
  1622. --- mawk112/rexp/rexp.h    Tue Apr  7 12:56:43 1992
  1623. ***************
  1624. *** 11,18 ****
  1625. X  ********************************************/
  1626. X  
  1627. ! /*$Log:    rexp.h,v $
  1628. !  * Revision 3.6  92/01/21  17:31:45  brennan
  1629. X   * moved ison() macro out of rexp[23].c
  1630. !  * 
  1631. X   * Revision 3.5  91/10/29  10:53:55  brennan
  1632. X   * SIZE_T
  1633. --- 11,18 ----
  1634. X  ********************************************/
  1635. X  
  1636. ! /*$Log: rexp.h,v $
  1637. !  * Revision 3.6  1992/01/21  17:31:45  brennan
  1638. X   * moved ison() macro out of rexp[23].c
  1639. !  *
  1640. X   * Revision 3.5  91/10/29  10:53:55  brennan
  1641. X   * SIZE_T
  1642. *** mawk/rexp/rexp0.c    Tue Mar  3 17:24:00 1992
  1643. --- mawk112/rexp/rexp0.c    Tue Apr 21 13:20:31 1992
  1644. ***************
  1645. *** 11,15 ****
  1646. X  ********************************************/
  1647. X  
  1648. ! /*$Log:    rexp0.c,v $
  1649. X   * Revision 3.6  92/01/21  17:32:51  brennan
  1650. X   * added some casts so that character classes work with signed chars
  1651. --- 11,23 ----
  1652. X  ********************************************/
  1653. X  
  1654. ! /*$Log: rexp0.c,v $
  1655. !  * Revision 3.8  1992/04/21  20:22:38  brennan
  1656. !  * 1.1 patch2
  1657. !  * [c1-c2] now works if c2 is an escaped character
  1658. !  *
  1659. !  * Revision 3.7  1992/03/24  09:33:12  brennan
  1660. !  * 1.1 patch2
  1661. !  * When backing up in do_str, check if last character was escaped
  1662. !  *
  1663. X   * Revision 3.6  92/01/21  17:32:51  brennan
  1664. X   * added some casts so that character classes work with signed chars
  1665. ***************
  1666. *** 186,189 ****
  1667. --- 194,202 ----
  1668. X  }
  1669. X  
  1670. + /*
  1671. +   collect a run of characters into a string
  1672. +   machine
  1673. + */
  1674. X  static  int  do_str( c, pp, mp)
  1675. X    int c ; /* the first character */
  1676. ***************
  1677. *** 191,199 ****
  1678. X    MACHINE  *mp ;  /* where to put the string machine */
  1679. X  { register char *p , *s ;
  1680. !   char *str ;
  1681. !   unsigned len ;
  1682. X  
  1683. X  
  1684. !   p = *pp ;
  1685. X    s = str = RE_malloc( re_len ) ;
  1686. X    *s++ = c ;  len = 1 ;
  1687. --- 204,213 ----
  1688. X    MACHINE  *mp ;  /* where to put the string machine */
  1689. X  { register char *p , *s ;
  1690. !   char *p_entry ;
  1691. !   char *str ;    /* collect it here */
  1692. !   unsigned len ; /* length collected */
  1693. X  
  1694. X  
  1695. !   p = p_entry = *pp ;
  1696. X    s = str = RE_malloc( re_len ) ;
  1697. X    *s++ = c ;  len = 1 ;
  1698. ***************
  1699. *** 219,224 ****
  1700. X    /* if len > 1 and we failed on a ? + or * , need to back up */
  1701. X    if ( len > 1 && (*p == '*' || *p == '+' || *p == '?' ) )
  1702. !   { len-- ; p-- ; s-- ; }
  1703. X  
  1704. X    *s = 0 ;
  1705. X    *pp = p ;
  1706. --- 233,251 ----
  1707. X    /* if len > 1 and we failed on a ? + or * , need to back up */
  1708. X    if ( len > 1 && (*p == '*' || *p == '+' || *p == '?' ) )
  1709. !   { len-- ; p-- ; s-- ; 
  1710. X  
  1711. +     /* if the last character was escaped, back up one more */
  1712. +     {
  1713. +       int cnt = 0 ;
  1714. +       char *bp = p-1 ;
  1715. +       while ( bp >= p_entry && *bp == '\\' )
  1716. +       {
  1717. +     cnt++ ; bp-- ;
  1718. +       }
  1719. +       if ( cnt & 1 )  p-- ;
  1720. +     }
  1721. +   }
  1722. X    *s = 0 ;
  1723. X    *pp = p ;
  1724. ***************
  1725. *** 232,236 ****
  1726. X   *---------------------------*/
  1727. X  
  1728. ! #define  on( b, x)  ( (b)[((unsigned char)(x))>>3] |= ( 1 << ((x)&7) ))
  1729. X  
  1730. X  static  void  PROTO(block_on, (BV,int,int) ) ;
  1731. --- 259,263 ----
  1732. X   *---------------------------*/
  1733. X  
  1734. ! #define  on( b, x)  ((b)[(x)>>3] |= ( 1 << ((x)&7) ))
  1735. X  
  1736. X  static  void  PROTO(block_on, (BV,int,int) ) ;
  1737. ***************
  1738. *** 237,243 ****
  1739. X  
  1740. X  static  void  block_on( b, x, y)
  1741. !   BV b ; int x, y ; 
  1742. ! { int lo = (x&0xff) >> 3 ;
  1743. !   int hi = (y&0xff) >> 3 ;
  1744. X    int  i, j, bit  ;
  1745. X  
  1746. --- 264,272 ----
  1747. X  
  1748. X  static  void  block_on( b, x, y)
  1749. !   BV b ; 
  1750. !   int x, y ; 
  1751. !   /* caller makes sure x<=y and x>0 y>0 */
  1752. ! { int lo = x >> 3 ;
  1753. !   int hi = y >> 3 ;
  1754. X    int  i, j, bit  ;
  1755. X  
  1756. ***************
  1757. *** 267,271 ****
  1758. X    int comp_flag ;
  1759. X  
  1760. !   p = (*start) + 1 ;
  1761. X    if ( *p == ']' || *p == '^' && *(p+1) == ']' )
  1762. X           RE_error_trap(-E3) ;
  1763. --- 296,300 ----
  1764. X    int comp_flag ;
  1765. X  
  1766. !   p = t = (*start) + 1 ;
  1767. X    if ( *p == ']' || *p == '^' && *(p+1) == ']' )
  1768. X           RE_error_trap(-E3) ;
  1769. ***************
  1770. *** 280,284 ****
  1771. X      }
  1772. X    /*  q  now  pts at the back of the class   */
  1773. !   p = (*start) + 1 ;
  1774. X    *start = q + 1 ;
  1775. X  
  1776. --- 309,313 ----
  1777. X      }
  1778. X    /*  q  now  pts at the back of the class   */
  1779. !   p = t ;
  1780. X    *start = q + 1 ;
  1781. X  
  1782. ***************
  1783. *** 286,290 ****
  1784. X    (void) memset( bvp, 0, SIZE_T(sizeof(BV)) ) ;
  1785. X  
  1786. !   comp_flag = *p == '^' ? (p++ , 1) : 0 ;
  1787. X    prev = -1 ;  /* indicates  -  cannot be part of a range  */
  1788. X  
  1789. --- 315,321 ----
  1790. X    (void) memset( bvp, 0, SIZE_T(sizeof(BV)) ) ;
  1791. X  
  1792. !   if ( *p == '^' ) { comp_flag = 1 ; p++ ; }
  1793. !   else comp_flag = 0 ;
  1794. X    prev = -1 ;  /* indicates  -  cannot be part of a range  */
  1795. X  
  1796. ***************
  1797. *** 292,318 ****
  1798. X    {
  1799. X       switch( *p )
  1800. !       { case '\\' :
  1801. !           t = ++p ;
  1802. X            prev = escape(&t) ;
  1803. X            on(*bvp, prev) ;
  1804. X            p = t ;
  1805. !           continue ;
  1806. X  
  1807. X          case '-' :
  1808. -           if ( prev == -1 || p+1 == q || prev > *(unsigned char*)(p+1) )
  1809. -              { prev = '-' ; on(*bvp, '-') ; }
  1810. -           else
  1811. -              { p++ ;
  1812. -                block_on(*bvp, prev, *p) ;
  1813. -                prev = -1 ;
  1814. -              }
  1815. -           break ;
  1816. X  
  1817. X          default :
  1818. !           prev = *(unsigned char*)p ;
  1819. !           on(*bvp, *p) ;
  1820. X            break ;
  1821. X        }
  1822. -       p++ ;
  1823. X    }
  1824. X  
  1825. --- 323,375 ----
  1826. X    {
  1827. X       switch( *p )
  1828. !       { 
  1829. !     case '\\' :
  1830. !           t = p+1 ;
  1831. X            prev = escape(&t) ;
  1832. X            on(*bvp, prev) ;
  1833. X            p = t ;
  1834. !       break ;
  1835. X  
  1836. X          case '-' :
  1837. X  
  1838. +       if ( prev == -1 || p+1 == q )
  1839. +       {
  1840. +         prev = '-' ; 
  1841. +         on(*bvp,'-') ;
  1842. +         p++ ;
  1843. +       }
  1844. +       else
  1845. +       {
  1846. +         int c ;
  1847. +         char *mark = ++p ;
  1848. +         if ( *p != '\\' )  c = *(unsigned char *) p++ ;
  1849. +         else
  1850. +         {
  1851. +           t = p+1 ;
  1852. +           c = escape(&t) ;
  1853. +           p = t ;
  1854. +         }
  1855. +         if ( prev <= c )
  1856. +         {
  1857. +           block_on(*bvp, prev, c) ;
  1858. +           prev = -1 ;
  1859. +         }
  1860. +         else /* back up */
  1861. +         { 
  1862. +           p = mark ;
  1863. +           prev = '-' ;
  1864. +           on(*bvp,'-') ;
  1865. +         }
  1866. +       }
  1867. +       break ;
  1868. +           
  1869. X          default :
  1870. !           prev = *(unsigned char*)p++ ;
  1871. !           on(*bvp, prev) ;
  1872. X            break ;
  1873. X        }
  1874. X    }
  1875. X  
  1876. ***************
  1877. *** 455,458 ****
  1878. X    /* anything else \c -> c */
  1879. X    *start_p = p ;
  1880. !   return p[-1]  ;
  1881. X  }
  1882. --- 512,515 ----
  1883. X    /* anything else \c -> c */
  1884. X    *start_p = p ;
  1885. !   return  *(unsigned char*)(p-1) ;
  1886. X  }
  1887. *** mawk/rexp/rexp1.c    Tue Mar  3 17:29:26 1992
  1888. --- mawk112/rexp/rexp1.c    Mon Apr 27 10:14:01 1992
  1889. ***************
  1890. *** 11,18 ****
  1891. X  ********************************************/
  1892. X  
  1893. ! /*$Log:    rexp1.c,v $
  1894. !  * Revision 3.4  92/02/20  16:08:12  brennan
  1895. X   * change new_TWO() to work around sun acc bug
  1896. !  * 
  1897. X   * Revision 3.3  91/10/29  10:54:01  brennan
  1898. X   * SIZE_T
  1899. --- 11,18 ----
  1900. X  ********************************************/
  1901. X  
  1902. ! /*$Log: rexp1.c,v $
  1903. !  * Revision 3.4  1992/02/20  16:08:12  brennan
  1904. X   * change new_TWO() to work around sun acc bug
  1905. !  *
  1906. X   * Revision 3.3  91/10/29  10:54:01  brennan
  1907. X   * SIZE_T
  1908. *** mawk/rexp/rexp2.c    Tue Mar  3 17:24:02 1992
  1909. --- mawk112/rexp/rexp2.c    Tue Apr  7 12:56:46 1992
  1910. ***************
  1911. *** 11,18 ****
  1912. X  ********************************************/
  1913. X  
  1914. ! /*$Log:    rexp2.c,v $
  1915. !  * Revision 3.7  92/01/21  17:33:15  brennan
  1916. X   * added some casts so that character classes work with signed chars
  1917. !  * 
  1918. X   * Revision 3.6  91/10/29  10:54:03  brennan
  1919. X   * SIZE_T
  1920. --- 11,18 ----
  1921. X  ********************************************/
  1922. X  
  1923. ! /*$Log: rexp2.c,v $
  1924. !  * Revision 3.7  1992/01/21  17:33:15  brennan
  1925. X   * added some casts so that character classes work with signed chars
  1926. !  *
  1927. X   * Revision 3.6  91/10/29  10:54:03  brennan
  1928. X   * SIZE_T
  1929. *** mawk/rexp/rexp3.c    Tue Mar  3 17:24:04 1992
  1930. --- mawk112/rexp/rexp3.c    Tue Apr  7 12:56:46 1992
  1931. ***************
  1932. *** 11,18 ****
  1933. X  ********************************************/
  1934. X  
  1935. ! /*$Log:    rexp3.c,v $
  1936. !  * Revision 3.5  92/01/21  17:33:20  brennan
  1937. X   * added some casts so that character classes work with signed chars
  1938. !  * 
  1939. X   * Revision 3.4  91/10/29  10:54:09  brennan
  1940. X   * SIZE_T
  1941. --- 11,18 ----
  1942. X  ********************************************/
  1943. X  
  1944. ! /*$Log: rexp3.c,v $
  1945. !  * Revision 3.5  1992/01/21  17:33:20  brennan
  1946. X   * added some casts so that character classes work with signed chars
  1947. !  *
  1948. X   * Revision 3.4  91/10/29  10:54:09  brennan
  1949. X   * SIZE_T
  1950. *** mawk/rexp/rexpdb.c    Tue Mar  3 17:24:04 1992
  1951. --- mawk112/rexp/rexpdb.c    Tue Apr  7 12:56:47 1992
  1952. ***************
  1953. *** 12,19 ****
  1954. X  
  1955. X  
  1956. ! /*$Log:    rexpdb.c,v $
  1957. !  * Revision 3.2  91/08/13  09:10:09  brennan
  1958. X   * VERSION .9994
  1959. !  * 
  1960. X   * Revision 3.1  91/06/07  10:33:30  brennan
  1961. X   * VERSION 0.995
  1962. --- 12,19 ----
  1963. X  
  1964. X  
  1965. ! /*$Log: rexpdb.c,v $
  1966. !  * Revision 3.2  1991/08/13  09:10:09  brennan
  1967. X   * VERSION .9994
  1968. !  *
  1969. X   * Revision 3.1  91/06/07  10:33:30  brennan
  1970. X   * VERSION 0.995
  1971. *** /dev/null    Thu Oct  8 13:30:24 1992
  1972. --- mawk112/config/aix.h    Mon Jul  6 13:23:10 1992
  1973. ***************
  1974. *** 0 ****
  1975. --- 1,36 ----
  1976. + /********************************************
  1977. + aix.h
  1978. + copyright 1992.  Michael D. Brennan
  1979. + This is a source file for mawk, an implementation of
  1980. + the AWK programming language.
  1981. + Mawk is distributed without warranty under the terms of
  1982. + the GNU General Public License, version 2, 1991.
  1983. + ********************************************/
  1984. + /* $Log: aix.h,v $
  1985. +  * Revision 1.1  1992/07/06  20:26:36  brennan
  1986. +  * Initial revision
  1987. +  *
  1988. + */
  1989. + /* AIX 3.1 on RS6000 */
  1990. + #ifndef  CONFIG_H
  1991. + #define  CONFIG_H    1
  1992. + #define  HAVE_STDLIB_H  1
  1993. + #define  HAVE_PROTOS    1
  1994. + #define  HAVE_STDARG_H  1
  1995. + #define  DONT_PROTO_OPEN
  1996. + #include "config/Idefault.h"
  1997. + #endif
  1998. *** /dev/null    Thu Oct  8 13:30:24 1992
  1999. --- mawk112/config/convex.h    Wed Jul  8 09:04:08 1992
  2000. ***************
  2001. *** 0 ****
  2002. --- 1,46 ----
  2003. + /********************************************
  2004. + convex.h
  2005. + copyright 1992, Michael D. Brennan
  2006. + This is a source file for mawk, an implementation of
  2007. + the AWK programming language.
  2008. + Mawk is distributed without warranty under the terms of
  2009. + the GNU General Public License, version 2, 1991.
  2010. + ********************************************/
  2011. + /* tested on ConvexOS 9.1
  2012. + There is a bug in convex strtod(3) in OS 8.1, 9.0 and 9.1.
  2013. + It is supposed to be fixed in 10.0
  2014. + The patch is PR-25399
  2015. + */
  2016. + /*$Log: convex.h,v $
  2017. +  * Revision 1.1  1992/07/08  16:07:31  brennan
  2018. +  * Initial revision
  2019. +  *
  2020. + */
  2021. + /* convex.h */
  2022. + #ifndef   CONFIG_H
  2023. + #define   CONFIG_H    1
  2024. + #define    FPE_TRAPS_ON    1
  2025. + #define    FPE_ZERODIVIDE    0x4
  2026. + #define    FPE_OVERFLOW    0x3
  2027. + #define    HAVE_MATHERR    0
  2028. + #define  sys_nerr    __ap$sys_nerr
  2029. + #define  sys_errlist    __ap$sys_errlist
  2030. + #include "config/Idefault.h"
  2031. + #endif /* CONFIG_H  */
  2032. *** /dev/null    Thu Oct  8 13:30:24 1992
  2033. --- mawk112/config/sysVr4i386.h    Tue Jul 14 07:20:41 1992
  2034. ***************
  2035. *** 0 ****
  2036. --- 1,52 ----
  2037. + /********************************************
  2038. + sysVr4i386.h
  2039. + copyright 1992, Michael D. Brennan
  2040. + This is a source file for mawk, an implementation of
  2041. + the AWK programming language.
  2042. + Mawk is distributed without warranty under the terms of
  2043. + the GNU General Public License, version 2, 1991.
  2044. + ********************************************/
  2045. + /* 
  2046. +  On Intel platforms and maybe others,
  2047. +  for some strange reason, division by zero traps but overflow
  2048. +  does not, so we have to turn on the overflow trap.
  2049. +  (This seems like a small bug to me.)
  2050. +  If the trap is on, it won't hurt to turn it on some more.
  2051. +  If you have ieee754 hardware *and* a math lib that
  2052. +  supports it use sysV_ieeefp.h instead.
  2053. + */
  2054. + /*$Log: sysVr4i386.h,v $
  2055. +  * Revision 1.3  1992/07/14  14:23:35  brennan
  2056. +  * fixed typo
  2057. +  *
  2058. +  * Revision 1.2  1992/07/07  15:40:02  brennan
  2059. +  * DONT_PROTO_OPEN
  2060. +  *
  2061. +  * Revision 1.1  1992/07/01  18:07:47  brennan
  2062. +  * Initial revision
  2063. +  *
  2064. + */
  2065. + #ifndef    CONFIG_H
  2066. + #define    CONFIG_H        1
  2067. + #define        FPE_TRAPS_ON        1
  2068. + #define        NOINFO_SIGFPE        1
  2069. + #define  USE_IEEEFP_H
  2070. + #define  TURN_ON_FPE_TRAPS()  (void)fpsetmask(fpgetmask()|FP_X_OFL)
  2071. + #define  DONT_PROTO_OPEN
  2072. + #include  "config/Idefault.h"
  2073. + #endif   /* CONFIG_H */
  2074. SHAR_EOF
  2075. echo 'File diffs2 is complete' &&
  2076. chmod 0644 diffs2 ||
  2077. echo 'restore of diffs2 failed'
  2078. Wc_c="`wc -c < 'diffs2'`"
  2079. test 107075 -eq "$Wc_c" ||
  2080.     echo 'diffs2: original size 107075, current size' "$Wc_c"
  2081. rm -f _shar_wnt_.tmp
  2082. fi
  2083. # ============= Xparse.c ==============
  2084. if test -f 'Xparse.c' -a X"$1" != X"-c"; then
  2085.     echo 'x - skipping Xparse.c (File already exists)'
  2086.     rm -f _shar_wnt_.tmp
  2087. else
  2088. > _shar_wnt_.tmp
  2089. echo 'x - extracting Xparse.c (Text)'
  2090. sed 's/^X//' << 'SHAR_EOF' > 'Xparse.c' &&
  2091. #ifndef lint
  2092. static char yyid[] = "@(#)modification of yaccpar 1.8 (Berkeley) 01/20/90";
  2093. #endif
  2094. #define YYXBYACC 1  /* XBYACC -- modified Berkeley yacc */
  2095. /*
  2096. X Berkeley yacc modified so only tables and
  2097. X yydebug and yylval are global
  2098. X #define YYGLOBAL -- gives standard byacc
  2099. X #define YYPURE -- gives a reentrant parser
  2100. X
  2101. X Mike Brennan 11/05/91
  2102. */
  2103. #line 31 "parse.y"
  2104. #include <stdio.h>
  2105. #include "mawk.h"
  2106. #include "code.h"
  2107. #include "symtype.h"
  2108. #include "memory.h"
  2109. #include "bi_funct.h"
  2110. #include "bi_vars.h"
  2111. #include "jmp.h"
  2112. #include "field.h"
  2113. #include "files.h"
  2114. X
  2115. #ifdef  YYXBYACC
  2116. #define YYBYACC        1
  2117. #endif
  2118. X
  2119. #define  YYMAXDEPTH    200
  2120. X
  2121. /* Bison's use of MSDOS and ours clashes */
  2122. #undef   MSDOS
  2123. X
  2124. extern void  PROTO( eat_nl, (void) ) ;
  2125. static void  PROTO( resize_fblock, (FBLOCK *, INST *) ) ;
  2126. static void  PROTO( code_array, (SYMTAB *) ) ;
  2127. static void  PROTO( code_call_id, (CA_REC *, SYMTAB *) ) ;
  2128. static void  PROTO( field_A2I, (void)) ;
  2129. static int   PROTO( current_offset, (void) ) ;
  2130. static void  PROTO( check_var, (SYMTAB *) ) ;
  2131. static void  PROTO( check_array, (SYMTAB *) ) ;
  2132. static void  PROTO( RE_as_arg, (void)) ;
  2133. X
  2134. static int scope ;
  2135. static FBLOCK *active_funct ;
  2136. X      /* when scope is SCOPE_FUNCT  */
  2137. X
  2138. #define  code_address(x)  if( is_local(x) )\
  2139. X                          { code1(L_PUSHA) ; code1((x)->offset) ; }\
  2140. X                          else  code2(_PUSHA, (x)->stval.cp) 
  2141. X
  2142. /* this nonsense caters to MSDOS large model */
  2143. #define  CODE_FE_PUSHA()  code_ptr->ptr = (PTR) 0 ; code1(FE_PUSHA)
  2144. X
  2145. #line 74 "parse.y"
  2146. typedef union{
  2147. CELL *cp ;
  2148. SYMTAB *stp ;
  2149. INST  *start ; /* code starting address */
  2150. PF_CP  fp ;  /* ptr to a (print/printf) or (sub/gsub) function */
  2151. BI_REC *bip ; /* ptr to info about a builtin */
  2152. FBLOCK  *fbp  ; /* ptr to a function block */
  2153. ARG2_REC *arg2p ;
  2154. CA_REC   *ca_p  ;
  2155. int   ival ;
  2156. PTR   ptr ;
  2157. } YYSTYPE;
  2158. #line 69 "y.tab.c"
  2159. #define UNEXPECTED 257
  2160. #define BAD_DECIMAL 258
  2161. #define NL 259
  2162. #define SEMI_COLON 260
  2163. #define LBRACE 261
  2164. #define RBRACE 262
  2165. #define LBOX 263
  2166. #define RBOX 264
  2167. #define COMMA 265
  2168. #define IO_OUT 266
  2169. #define ASSIGN 267
  2170. #define ADD_ASG 268
  2171. #define SUB_ASG 269
  2172. #define MUL_ASG 270
  2173. #define DIV_ASG 271
  2174. #define MOD_ASG 272
  2175. #define POW_ASG 273
  2176. #define QMARK 274
  2177. #define COLON 275
  2178. #define OR 276
  2179. #define AND 277
  2180. #define IN 278
  2181. #define MATCH 279
  2182. #define EQ 280
  2183. #define NEQ 281
  2184. #define LT 282
  2185. #define LTE 283
  2186. #define GT 284
  2187. #define GTE 285
  2188. #define CAT 286
  2189. #define GETLINE 287
  2190. #define PLUS 288
  2191. #define MINUS 289
  2192. #define MUL 290
  2193. #define DIV 291
  2194. #define MOD 292
  2195. #define NOT 293
  2196. #define UMINUS 294
  2197. #define IO_IN 295
  2198. #define PIPE 296
  2199. #define POW 297
  2200. #define INC_or_DEC 298
  2201. #define DOLLAR 299
  2202. #define FIELD 300
  2203. #define LPAREN 301
  2204. #define RPAREN 302
  2205. #define DOUBLE 303
  2206. #define STRING_ 304
  2207. #define RE 305
  2208. #define ID 306
  2209. #define D_ID 307
  2210. #define FUNCT_ID 308
  2211. #define BUILTIN 309
  2212. #define LENGTH 310
  2213. #define PRINT 311
  2214. #define PRINTF 312
  2215. #define SPLIT 313
  2216. #define MATCH_FUNC 314
  2217. #define SUB 315
  2218. #define GSUB 316
  2219. #define DO 317
  2220. #define WHILE 318
  2221. #define FOR 319
  2222. #define BREAK 320
  2223. #define CONTINUE 321
  2224. #define IF 322
  2225. #define ELSE 323
  2226. #define DELETE 324
  2227. #define BEGIN 325
  2228. #define END 326
  2229. #define EXIT 327
  2230. #define NEXT 328
  2231. #define RETURN 329
  2232. #define FUNCTION 330
  2233. #define YYERRCODE 256
  2234. short yylhs[] = {                                        -1,
  2235. X    0,    0,   36,   36,   36,   37,   40,   37,   41,   37,
  2236. X   42,   37,   43,   44,   37,    1,    1,    2,    2,    3,
  2237. X    3,    4,    4,    4,    4,    4,    4,    4,    4,   45,
  2238. X   45,   13,   13,   13,   13,   13,   13,   13,   13,   13,
  2239. X   13,   13,   13,   13,   13,   13,   46,   13,   47,   13,
  2240. X   48,   49,   13,   14,   14,   15,   15,   15,   15,   15,
  2241. X   15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
  2242. X   15,   15,   15,   15,   10,   25,   25,   26,   26,    8,
  2243. X    8,    5,    4,   27,   27,    6,    6,    6,    7,    7,
  2244. X   50,   50,   17,    4,   51,    4,   52,    4,   16,    4,
  2245. X    4,   18,   18,   19,   19,   53,   53,   13,   13,   10,
  2246. X   15,   15,    4,   20,    4,   11,   11,   11,   11,   11,
  2247. X   15,   13,   13,   13,   13,   13,   13,   13,   15,   22,
  2248. X   54,   54,   15,   23,    4,    4,   21,   21,   15,   15,
  2249. X   15,   15,   15,   55,   12,   12,    9,    9,   15,   28,
  2250. X   28,   24,   24,   38,   29,   30,   30,   34,   34,   35,
  2251. X   35,   39,   15,   31,   31,   32,   32,   32,   33,   33,
  2252. };
  2253. short yylen[] = {                                         2,
  2254. X    1,    2,    1,    1,    2,    1,    0,    3,    0,    3,
  2255. X    0,    3,    0,    0,    6,    3,    3,    1,    1,    1,
  2256. X    2,    1,    2,    1,    2,    2,    2,    1,    2,    1,
  2257. X    1,    1,    3,    3,    3,    3,    3,    3,    3,    3,
  2258. X    3,    3,    3,    3,    3,    3,    0,    4,    0,    4,
  2259. X    0,    0,    7,    1,    2,    1,    1,    1,    3,    1,
  2260. X    3,    3,    3,    3,    3,    3,    2,    2,    2,    1,
  2261. X    2,    2,    2,    2,    1,    0,    1,    1,    3,    5,
  2262. X    1,    0,    5,    1,    1,    1,    3,    2,    3,    3,
  2263. X    0,    2,    4,    2,    1,    4,    1,    7,    4,    2,
  2264. X    4,    3,    4,    1,    2,    1,    2,    3,    5,    5,
  2265. X    5,    6,    7,    6,    2,    1,    2,    6,    2,    3,
  2266. X    1,    3,    3,    3,    3,    3,    3,    3,    2,    5,
  2267. X    1,    3,    6,    1,    2,    3,    2,    3,    1,    2,
  2268. X    2,    3,    4,    1,    1,    1,    2,    3,    6,    1,
  2269. X    1,    1,    3,    2,    4,    2,    2,    0,    1,    1,
  2270. X    3,    1,    3,    2,    2,    1,    3,    3,    2,    2,
  2271. };
  2272. short yydefred[] = {                                      0,
  2273. X  162,    0,  144,    0,    0,    0,    0,    0,  116,    0,
  2274. X   56,   57,   60,    0,   82,   82,   81,    0,    0,  150,
  2275. X  151,    7,    9,    0,    0,    6,   70,    0,    0,    0,
  2276. X    0,    0,    0,    0,    0,    0,    0,    1,    3,    4,
  2277. X    0,    0,    0,   30,   31,   84,   85,   97,    0,    0,
  2278. X    0,    0,    0,    0,    0,    0,    0,   22,    0,   20,
  2279. X    0,    0,    0,    0,    0,   28,   82,   24,    0,    0,
  2280. X    0,    0,    0,    0,    0,    0,    0,   72,   74,    0,
  2281. X  119,    0,    0,    0,   71,    0,    0,    0,    0,    0,
  2282. X    0,    0,  156,  157,    2,    0,    0,    0,    0,    0,
  2283. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  2284. X   73,   13,   51,   47,   49,    0,    0,    0,    0,    0,
  2285. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  2286. X    0,    0,    0,  131,  129,    0,  154,    0,    5,  147,
  2287. X  145,  146,    0,   17,   25,    0,    0,   26,   27,    0,
  2288. X   82,    0,  135,   29,    0,  137,    0,   16,   21,   23,
  2289. X  100,    0,  104,    0,    0,  115,    0,    0,    0,    0,
  2290. X    0,    0,    0,    0,    0,  120,    0,   59,    0,    0,
  2291. X  163,    0,    0,    0,    0,    8,   10,    0,    0,    0,
  2292. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  2293. X    0,    0,    0,    0,    0,  108,    0,   40,   41,   42,
  2294. X   43,   44,   45,   18,   12,   19,    0,    0,    0,    0,
  2295. X    0,    0,    0,    0,    0,    0,  160,    0,    0,  148,
  2296. X    0,  102,    0,    0,    0,    0,  136,  138,   95,    0,
  2297. X  105,  106,    0,    0,    0,    0,    0,   86,    0,    0,
  2298. X    0,    0,    0,    0,    0,    0,    0,  164,    0,    0,
  2299. X  165,    0,    0,    0,    0,    0,    0,    0,  143,  132,
  2300. X    0,  155,    0,   99,    0,  103,   93,    0,   96,  107,
  2301. X  101,   88,    0,    0,    0,    0,    0,    0,    0,    0,
  2302. X  109,    0,  168,  170,  167,  169,   80,  130,    0,    0,
  2303. X   52,    0,  161,    0,    0,    0,    0,   83,    0,    0,
  2304. X    0,  110,  118,  112,  133,   15,    0,    0,  152,  149,
  2305. X  114,    0,    0,    0,    0,  113,   98,  153,
  2306. };
  2307. short yydgoto[] = {                                      25,
  2308. X   58,  215,   59,   60,   86,  246,   82,   27,   28,   29,
  2309. X   30,  143,   61,   32,   33,   62,   63,   64,  165,   65,
  2310. X   66,   34,  226,  320,  248,  249,   67,   35,   36,   37,
  2311. X  181,  182,  261,  228,  229,   38,   39,   40,   41,   91,
  2312. X   92,  124,  202,  300,   68,  204,  205,  203,  317,  285,
  2313. X  240,   69,  244,  135,   42,
  2314. };
  2315. short yysindex[] = {                                     35,
  2316. X    0,  278,    0, 2243, 2243, 2243,  -26, 2153,    0, 2273,
  2317. X    0,    0,    0, -286,    0,    0,    0, -269, -228,    0,
  2318. X    0,    0,    0, -255,   35,    0,    0, 2243,  284, 2166,
  2319. X 2547, 2243,  116, -257, -161, -246, -159,    0,    0,    0,
  2320. X -246,  -63, -124,    0,    0,    0,    0,    0, -157, -151,
  2321. X -196, -196, -148, -141, 1729, -196, 1729,    0,  130,    0,
  2322. X 2499,  352,  352,   69,  352,    0,    0,    0,  352, 2273,
  2323. X -286, -220, -211, -211, -211, -282,    0,    0,    0,    0,
  2324. X    0, -232, 2146, 2093,    0,  -96, -132, -122, 2273, 2273,
  2325. X -246, -246,    0,    0,    0, -120, 2273, 2273, 2273, 2273,
  2326. X 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273,
  2327. X    0,    0,    0,    0,    0, -110, 2273, 2273, 2273, 2273,
  2328. SHAR_EOF
  2329. true || echo 'restore of Xparse.c failed'
  2330. fi
  2331. echo 'End of  part 2'
  2332. echo 'File Xparse.c is continued in part 3'
  2333. echo 3 > _shar_seq_.tmp
  2334. exit 0
  2335.  
  2336. exit 0 # Just in case...
  2337.